home *** CD-ROM | disk | FTP | other *** search
- /* Larry Jordan's sample c program functions */
-
- #include <stdio.h> /* std I/O library on c disk */
-
- #define EOF -1 /* logical ^Z EOF ends copy */
- #define YES 1
- #define NO 0
- #define YES 1
- #define NO 0
- #define NL '\n'
- #define EOS '\0'
- #define MAXLINE 1024
- #define FF '\012' /* ASCII Form feed */
- #define DIGMAX 10
-
- int inword;
- int nl;
- int nw;
- int nc;
- int ndigits[DIGMAX];
- int c;
-
-
-
-
- /* ---------------------------------------------------------------------- */
-
-
- main() /* */
- {
-
- int len; /* current line length */
- int max; /* max length so far */
- char line[MAXLINE];
- char save[MAXLINE];
- char lineupper[MAXLINE];
- char linelower[MAXLINE];
-
- max = 0;
-
- printf("\n");
- printf("\n");
- printf("Jordan's function test ...\n");
- printf("\n");
- printf("Input text for test.\n");
- printf("\n");
-
-
- while ((len = getline(line, MAXLINE)) > 0) /* getline defined below */
- printf("\nLine = %s\n", line);
-
-
-
- }
-
-
-
- /* ---------------------------------------------------------------------- */
-
-
- redirect() /* redirect keybd to CRT */
- {
- int c;
-
- printf("\n");
- printf("\n");
- printf("Jordan's redirect function...\n");
- printf("\n");
- printf("Input numbers, space characters, etc...\n");
- printf("?");
-
-
- while ((c = getchar()) != EOF) /* get char until EOF found */
- putchar(c); /* send char to scrn: */
- }
-
-
- /* ---------------------------------------------------------------------- */
-
-
-
- wordcnt() /* count lines, words, chars in input */
- {
-
- double c, nc, nl, nw; /* counters are float */
- int inword; /* logical is interger */
-
- inword = NO;
- nl = nw = nc = 0.0; /* initialize variables */
-
- printf("\n");
- printf("\n");
- printf("Jordan's word count function ...\n");
- printf("\n");
- printf("Input text for character, word and line count search.\n");
- printf("\n");
-
-
- while ((c = getchar()) != EOF) {
- nc = nc + 1;
-
- if (c == '\n') /* if c=LF then inc nl */
- nl = nl + 1;
-
- if (c == ' ' || c == '\n' || c == '\t') /* if char is space, */
- inword = NO; /* LF or TAB then it */
- /* cannot be a word */
-
- else if (inword == NO) { /* otherwise it is a */
- inword = YES; /* word */
- nw = nw + 1;
- }
- }
- printf("\n");
- printf("\n");
- printf("Number of characters = ");
- printf("%.0f\n",nc); /* prt float # with no dec */
- printf("Number of words = ");
- printf("%.0f\n",nw);
- printf("Number of lines = ");
- printf("%.0f\n",nl);
-
- printf("\n");
- }
-
-
- /* ---------------------------------------------------------------------- */
-
-
- maxline() /* gets maximum length line in file */
- {
- int len; /* current line length */
- int max; /* max length so far */
- char line[MAXLINE];
- char save[MAXLINE];
-
- max = 0;
-
- printf("\n");
- printf("\n");
- printf("Jordan's get maximum length line function ...\n");
- printf("\n");
- printf("Input text for maximum line length search.\n");
- printf("\n");
-
-
- while ((len = getline(line, MAXLINE)) > 0) /* getline defined below */
- if (len > max){
- max = len;
- copy(line, save); /* function from below */
- }
- if (max > 0)
- printf("%s", save);
- }
-
-
- /* ---------------------------------------------------------------------- */
-
-
- getline(s, lim) /* getline into s, return length of s */
- char s[];
- int lim;
- {
- int c,i;
-
- for (i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
- s[i] = c;
- if (c == '\n'){
- s[i] = c;
- ++i;
- }
- s[i] = '\0';
- return(i);
- }
-
-
-
- /* ---------------------------------------------------------------------- */
-
-
- copy(s1, s2) /* copy s1 to s2; assume s2 big enough */
- char s1[], s2[];
- {
- int i;
-
- i = 0;
- while (s2[i] = s1[i] != EOS)
- ++i;
- }
-
-
-
-
- /* ---------------------------------------------------------------------- */
-
-
- power(x, n) /* raise x to n-th power; n > 0 */
- int x, n;
- {
- int i, p;
-
- p = 1;
- for (i=1; i<=n; ++i)
- p=p*x;
- return(p);
- }
-
-
-
- /* ---------------------------------------------------------------------- */
-
-
- digicnt() /* count digits, spaces, others */
- {
- int c, i, nspaces, nother; /* integers */
- int ndigits[DIGMAX]; /* integer array */
-
- nspaces = nother = 0;
- for (i= 0; i < 10; ++i)
- ndigits[i] = 0; /* initialize arry to 0 */
-
-
- printf("\n");
- printf("\n");
- printf("Jordan's number counter...\n");
- printf("\n");
- printf("Input numbers, space characters, etc...\n");
- printf("?");
-
- while ((c = getchar()) != EOF)
- if (c >= '0' && c <= '9')
- ++ndigits[c];
- else if (c == ' ' || c == '\n' || c == '\t')
- ++nspaces;
- else
- ++nother;
-
-
-
- printf("\n");
- printf("\n");
- printf("Jordan's number counter results...\n");
- printf("\n");
- printf("Number of digits = ");
- for (i=0; i < 10; ++i)
- printf(" %d", ndigits[i]);
- printf("\nNumber of spaces = %d, Other = %d\n",
- nspaces, nother);
- printf("\n");
- }
-
-
-
- /* ---------------------------------------------------------------------- */
-
- strlen(s) /* return length of string s */
- char s[];
- {
- int i;
-
- i = 0;
- while (s[i] != '\0')
- ++i;
- return(i);
- }
-
-
- /* ---------------------------------------------------------------------- */
-
- atoi(s) /* convert numeric string into numeric equiv */
- char s[];
- {
-
- int i;
- int n; /* need double precision for no > 32K */
-
- n = 0;
- for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
- n = 10 * n + s[i] - '0';
-
- return(n);
- }
-
-
- /* ---------------------------------------------------------------------- */
-
-
-
-
- isdigit(c) /* test character to see if it is a digit */
- int c;
- {
- int isdigit;
-
- return(isdigit = c >= '0' && c<= '9'); /* isdigit true = 1 */
- /* isdigit false = 0 */
-
- }
-
-
- /* ---------------------------------------------------------------------- */